<?php

namespace Mouta\AmistateBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use Mouta\AmistateBundle\utils\Strings;
use Mouta\AmistateBundle\utils\SfSolr;


class PerfilController extends Controller
{
    public function VerAction($usuario)
    {
        $session = $this->get('session');
        if(!$this->get('security.context')->isGranted('ROLE_USER')){
            if($session->get('MUJERES_VOTADAS',0) > 5){
                $session->set('sexo_votado',1);
                $session->set('MUJERES_VOTADAS',0);
                return $this->redirect( $this->generateUrl('fos_user_registration_register'));
            }
            if($session->get('HOMBRES_VOTADOS',0) > 5){
                $session->set('sexo_votado',0);
                $session->set('HOMBRES_VOTADOS',0);
                return $this->redirect( $this->generateUrl('fos_user_registration_register'));
            }
        }
        
        $em = $this->getDoctrine()->getEntityManager();
        $userActual = $this->get('security.context')->getToken()->getUser();
        $user = $em->getRepository('AmistateBundle:Usuario')->getFullUserById($usuario);
        if(!$user || $user->getBorrado()){
            $response = new Response('Content', 404, array('content-type' => 'text/html'));
            return $this->render('AmistateBundle:listados:error.html.twig',array(),$response);
        }
        $lastUserVote = $session->get('LAST-USER-VOTE');
        $valorUltimoVoto = $session->get('LAST-USER-VOTE-VALUE');
        $lastUser = null;
        if($lastUserVote)
            $lastUser = $em->getRepository('AmistateBundle:Usuario')->getFullUserById($lastUserVote);
        
        $repoUser = $em->getRepository('AmistateBundle:Usuario');
        $solicitud = null;
        
        if($this->get('security.context')->isGranted('ROLE_USER'))
            $solicitud = $em->getRepository('AmistateBundle:Solicitud')->getAmistadCon($userActual->getId(),$usuario);
        $title = $user->getNombre() . ' - ' . $repoUser->getOpcionesSexo( $user->getSexo() ) . ' - ' . $user->getUbicacionText() . ' - ' . $user->getDescripcion();
        $ubi = $user->getCiudad();
        if(!$ubi)
            $ubi = $user->getProvincia();
        if(!$ubi)
            $ubi = $user->getPais();
        
        $descripcion = "Me llamo " . $user->getNombre() . ', soy de ' . $ubi . ', busco ' . $repoUser->getOpcionesSexo( $user->getBusco() ) . ' para '.$repoUser->getOpcionesPara( $user->getPara() ). ' - ' . $user->getDescripcion();
        return $this->render('AmistateBundle:perfil:ver.html.twig',array(
                'user'=>$user,
                'lastUser'=>$lastUser,
                'valorUltimoVoto'=>$valorUltimoVoto,
                'solicitud'=>$solicitud,
                'title'=> Strings::recortar($title, 70),
                'descripcion'=>Strings::recortar($descripcion,160),
            ));
        
    }
    
    public function pathAction($user){
        return $this->render('AmistateBundle:perfil:path.html.twig',array(
            'user'=>$user,
        ));
    }
    
    public function VotarAction($usuario,$puntos)
    {
        $em = $this->getDoctrine()->getEntityManager();
        $user = $em->getRepository('AmistateBundle:Usuario')->findOneBy(array('id'=>$usuario));
        $nextUser = 1;
        if($user)
        {
            $puntosCalculados = (($user->getPuntos() * $user->getVotos()) + $puntos )/ ($user->getVotos()+1);
            $user->setPuntos($puntosCalculados);
            $user->setVotos($user->getVotos()+1);
            $user->setReindexar(1);
            $em->persist($user);
            $em->flush();
            $session = $this->get('session');
            $session->set('LAST-USER-VOTE',$usuario);
            $session->set('LAST-USER-VOTE-VALUE',$puntos);
            if($user->getSexo())
                $session->set('MUJERES_VOTADAS',$session->get('MUJERES_VOTADAS',0)+1);
            else
                $session->set('HOMBRES_VOTADOS',$session->get('HOMBRES_VOTADOS',0)+1);
            $query = '?q='.urlencode('sexo:'.$user->getSexo()).'%20AND%20tienefoto%3A1&sort=random_'.mt_rand(1, 100000000)."%20desc&start=0&rows=1";
            $result = SfSolr::getQuery($query);
        
            $nextUser = $result['response']['docs'][0]['id'];
        }
        return new Response( $this->generateUrl('perfil',array('usuario'=>$nextUser)) );
    }
}
